FreshでObsidian Publishライクなブログを目指す

作成日
更新日

現状

変えること

  • ディレクトリをフラットにする

  • サブモジュールから取得するという点もできれば変えたい

  • 画像をDBに保存する?

    • GPT的には別にやらなくていいらしい
  • 記事をDBに保存する?

    • これもGPT的にはやらなくていいっぽい
  • プレビューが表示されないので確認してから投稿されて欲しい

  • ブログが重い

    • 画像が重いだけで、コレまでの方法でも悪くはなさそう?
    • 画像だけはSupabase Storageに移行するのが良さそう。
    • あとWEBPならまだマシそう。
  • DB に画像を保存すると、クエリ速度が落ちる

    • 画像はバイナリデータ(BLOB)であり、DB に保存すると検索パフォーマンスが悪化する
    • 画像はCDN で配信 するのが一般的
  • Markdownはテキストデータのため、DB に適している

    • メタデータ(タイトル・タグ)と一緒に管理しやすい
    • フルテキスト検索に対応しやすい
    • でもwiki的にリンクをつけるので別にテキスト検索はしないか?

方針

  • 画像をSupabase Storage移行する。
    • 料金をみる
  • コンテンツをSupabaseに置く
    • コレは必須ではない
    • 検索性が高くなるのでできれば採用したい
    • 料金次第
  • 記事のプレビュー機能を作る
    • ローカルでプレビューを行う or プレビュー用テーブルを作る
    • GitHub Actions + Preview ブランチにデプロイする
  • 既存のslugはなるべくそのままで
  • private が true の時はリンクをさせず、private false のコンテンツはリンクにする
    • 書く時には気にせず全てをウィキリンクにしておくことができる。
  • 外部リンクと内部リンクでリンクの色を変えたい

やること

全てを作り替えねばならぬ

一旦デザインと構成を練り直す。

  • 011_BlogImages002_Images を分けていたけど 002_Imagesに統一する。
    • Obsidianで画像の配置場所をフォルダごとに決める機能はないので(一応どうにかする方法はあるだろうけど。)
    • 移動DONE
    • スクリプト側も変えた。
  • 010_Blog の中にディレクトリを作っちゃう?
    • 基本は全部フラットにしたいが、aboutcontact といったページは分けたい。
    • page, posts, works にいれた。
    • categoryテーブルを作って articlesに紐づけた。
  • Notesディレクトリも対象にした。
    • Notes には基本 posts からの内部リンクで飛ぶことができる。
    • 一覧はつくらない
  • 一旦コードの整理を行う。
    • 全ての一覧記事ページは削除
      • searchだけは残す
    • カテゴリとタグという概念を削除
    • 日報も一旦廃止
    • 全てのslugページファイルを用意する
      • imagesは一箇所でいい。
      • () をつけたレイアウトわけをするかどうか
      • routes/[category]/[slug].tsx にする
        • カテゴリという概念を消したとはいったけど実はある
        • コレまでとは少し意味合いが変わる
      • 新しい構成
        • トップページ routes/index.tsx
        • リダイレクト用 routes/[slug].tsx
        • ~~検索結果 routes/search/index.tsx ~~
          • 検索結果はサイドバーでのみ表示する
        • 画像 routes/images/[...path].tsx 仮置き
        • 単一ページ routes/[category]/[slug].tsx
          • これはリダイレクト用にはいることがあったので修正
          • routes/posts/[slug].tsx 既存の記事
          • routes/notes/[slug].tsx Obsidian の Notes/のメモ
          • routes/works/[slug].tsx 作ったもの
          • routes/map/[slug].tsx マップ用
        • deprecated ページ routes/(deprecated)/ アプリのプラポリとか
  • 全てのtypesを定義する
    • Post
    • Category
      • ~~この2つだけで十分かも。 ~~
    • PostIndex を追加 (サイドバーなどでのindex表示用)
  • Supabaseから記事の取得は utils に定義
    • post
    • postIndex
    • category
  • 画像処理は api に定義
  • コンポーネントの枠組みを作る
  • Freshで全ページ共通のサイドバーを作る
サイトアイコン
公開日
更新日